Day 23 배열, 정렬, 문자열

Day23 23단계 2023-11-13

1. 특이한 정렬

import java.util.Arrays;
class Solution {
    public int[] solution(int[] numlist, int n) {
		Integer[] boxlist = Arrays.streamnew;		
		Arrays.sort(boxlist, (a, b)-> {
			int diff1 = Math.abs(a-n);
			int diff2 = Math.abs(b-n);
			if(diff1==diff2) return b - a;
			return diff1-diff2;
		});
        return Arrays.stream(boxlist).mapToInt(x->x).toArray();
    }
}
import java.util.Arrays;
class Solution {
    public int[] solution(int[] numlist, int n) {
		for (int i = 0; i < numlist.length - 1; i++) {
			for (int j = 0; j < numlist.length - 1 - i; j++) {
				int a = Math.abs(numlist[j]-n);
				int b = Math.abs(numlist[j+1]-n);
				if (a > b || (a == b && numlist[j] < numlist[j+1])) {
					int temp = numlist[j+1];
					numlist[j+1] = numlist[j];
					numlist[j] = temp;
				}
			}
		}
        return numlist;
    }
}

특이한정렬 비교결과.png


2. 등수 매기기

import java.util.Arrays;
class Solution {
    public int[] solution(int[][] score) {
		int[] avg = new int[score.length];
		int[] answer = new int[score.length];
		Arrays.fill(answer, 1);
		
		for (int i = 0; i < score.length; i++) {
			avg[i] = score[i][0] + score[i][1];
		}

		for (int i = 0; i < avg.length; i++) {
			for (int j = 0; j < avg.length; j++) {
				if (avg[i] < avg[j]) {
					answer[i]++;
				}
			}
		}
        return answer;
    }
}
List<Integer> list = new ArrayList<>();
for(int[] i : score) {
	list.add(i[0]+i[1]);
}
list.sort(Comparator.reverseOrder());

int[] answer = new int[score.length];
for (int i = 0; i < score.length; i++) {
	answer[i] = list.indexOf(score[i][0]+score[i][1]) + 1;
}
return answer;

!등수 매기기 비교 결과 1.png


3. 옹알이 (1)

class Solution {
    public int solution(String[] babbling) {
		String[] pron = {"aya", "ye", "woo", "ma"};
		int answer = 0;
		String temp = "";

		for (int i = 0; i < babbling.length; i++) {
			temp = babbling[i].replaceAll(pron[0], " ")
					.replaceAll(pron[1], " ")
					.replaceAll(pron[2], " ")
					.replaceAll(pron[3], " ");
			    if (temp.isBlank()) {
			    	answer++;
			    }
			    else continue;
		}
        return answer;
    }
}
int answer = 0;
for (int i = 0; i < babbling.length; i++) {
	if (babbling[i].matches("^(aya(?!aya)|ye(?!ye)|woo(?!woo)|ma(?!ma))+$")) 
	answer++;
}
return answer;
^(aya(?!aya)|ye(?!ye)|woo(?!woo)|ma(?!ma))+$

^               : 문자열의 시작
(               : 그룹 시작
  aya(?!aya)    : 'aya'라는 문자열 다음에 'aya'가 오지 않음
  |             : 또는
  ye(?!ye)      : 'ye'라는 문자열 다음에 'ye'가 오지 않음
  |             : 또는
  woo(?!woo)    : 'woo'라는 문자열 다음에 'woo'가 오지 않음
  |             : 또는
  ma(?!ma)      : 'ma'라는 문자열 다음에 'ma'가 오지 않음
)               : 그룹 끝
+               : 그룹이 최소 한 번 이상 반복
$               : 문자열의 끝